iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
AI/ ML & Data

【AI筆記】30天從論文入門到 Pytorch 實戰系列 第 26

【AI筆記】30天從論文入門到 Pytorch 實戰:RAG技術的介紹 Day 25

  • 分享至 

  • xImage
  •  

原文 Retrieval-Augmented Generation for Large Language Models: A Survey | PPT | 中文

引言

在人工智慧和自然語言處理領域,生成式模型如 GPT-3 和 GPT-4 已經展示了強大的文本生成能力。然而,這些模型有時會產生不準確或不相關的回應。為了解決這些問題,檢索增強生成(Retrieval-Augmented Generation, RAG)技術應運而生。本文將介紹 RAG 技術的基本概念、運作原理及其應用。

什麼是 RAG?

RAG 是一種結合預訓練大型語言模型與外部資料源的技術。這種方法結合了 GPT-3 或 GPT-4 等大型語言模型的生成能力與專門資料檢索機制的精確性,從而產生能夠提供細膩回應的系統。

RAG 的運作原理

RAG ref
RAG 的運作可以分為以下幾個步驟:

資料收集:首先,收集應用所需的所有資料,例如用戶手冊、產品資料庫和常見問題解答列表。

  1. Indexing:
    • 資料分塊(Chunk):將資料分解成更小被分割成區塊、更易管理,編碼成向量,以提高檢索效率。
    • 文檔嵌入:將資料轉換為向量資料庫,並儲存在向量資料庫中,確保系統能夠理解用戶查詢並匹配相關信息。
  2. Retrieval 處理用戶查詢:
    將用戶查詢轉換為嵌入,並與文檔嵌入進行比較,檢索最相關的資料塊。
    在這一階段,RAG首先使用檢索模型來從預先構建的文檔庫中挑選出最相關的文本片段。這些片段通常由嵌入表示(embeddings)所選擇,根據語意相似性檢索與問題最相關的前 k 個區塊。
  3. Generation 生成回應:
    檢索到的文本塊連同初始用戶查詢一起被輸入語言模型,生成對用戶問題的連貫回應。生成模型(通常是基於Transformer的架構)會將這些檢索出的文本片段作為上下文信息,輸入到生成過程中。這樣,模型不僅僅依賴於內部的語言表示,還能利用檢索到的外部知識來生成更加準確的文本。

三種 RAG

本篇作者將RAG分為三種:Naive RAG、Advanced RAG、Modular RAG。
3RAGref

Naive RAG

傳統的RAG包含了: Indexing ⮕ Retrieval ⮕ Genaration

Indexing:

  • 從清理和提取 PDF、HTML、Word 和 Markdown 等不同格式的原始資料開始,將其轉換為統一的純文字格式。
  • Data Embedding:因為 Model 看不懂文字,要轉換成有意義的數字。
    • M3E (Masked Language Modeling with Entity Embeddings): 是一種改進的 Masked Language Modeling (MLM) 技術,它結合了實體(Entity) Embeddings,可以更好地理解文本中的實體(Entity)和關係。M3E 通常用於構建語言模型,可以應用於 RAG 的語言模型部分。
    • BGE (Bi-Encoder with Global Embedding): 是一種用於信息檢索的技術,它使用兩個編碼器:一個編碼用戶查詢,另一個編碼文檔。BGE 可以用於 RAG 的信息檢索部分,幫助找到與用戶查詢最相關的文檔。
  • Vector Database: 儲存 Embedding 進資料庫。

補充:
Skip-Gram 和 CBOW 是用於 Word Embeddings 的技術,它們可以學習詞語之間的語義關係,並將詞語轉換成向量表示。這些向量表示可以作為語言模型的輸入,幫助語言模型理解詞語之間的關係。Skip-Gram 和 CBOW 可以被用於構建 RAG 中的語言模型,但並非 RAG 本身的一部分。 例如在訓練語言模型時,可以使用 Skip-Gram 或 CBOW 來生成詞嵌入,然後將這些詞嵌入作為語言模型的輸入。

簡而言之:

  • Skip-Gram 和 CBOW 用於生成詞嵌入,是語言模型的基礎技術。
  • M3E 改進了 MLM,可以更好地理解文本中的實體和關係,可以用於構建 RAG 的語言模型。
  • BGE 是一種信息檢索技術,可以用於 RAG 的信息檢索部分。

Naive RAG 困難

缺點: 檢索階段經常在precision和recall方面遇到困難,導致選擇錯位或不相關的區塊,並遺失關鍵資訊,生成困難。在產生回應時,模型可能會面臨幻覺問題,即產生檢索到的上下文不相符的內容。

Advanced RAG

Index Optimization ⮕ Pre-Retrieval Process ⮕ Retrieval⮕ Post-Retrieval Process ⮕ Genaration

Pre-Retrieval Process

在檢索之前,可以使用query改寫、routing 路由和 query擴展,讓模型改寫問題或是產生一個指導性的假文檔,然後將原始查詢與這個假文檔結合,形成一個新的query。

Optimizing Data Indexing

  • Chunking Optimisation:因為 Model 輸入的長度有限,需要把文本被分割成更小的、易於理解的區塊。
    • Small2Big: 在 sentense 級別做 embedding,找到相似的在找大塊的檔案(parent documents)檢索出來。
    • Sliding window technology:滑動窗口,讓chunk一層層重疊整個段落。

    ref

VectorDB / GraphDB

Post-Retrieval Process

ReRank(重新排序):使用更高級的模型(如跨編碼器或多向量重排序器)對這些文檔進行重新排序,確保最相關的文檔排在前面。

  • 跨編碼器(Cross-Encoder): 直接將查詢和文檔作為輸入,訓練一個模型來預測它們之間的相關性得分,這種方法通常能獲得更高的準確性,但計算成本也更高。
  • 多向量重排序器(Multi-Vector Rerankers):這種方法會使用多個向量來表示查詢和文檔,並通過這些向量之間的相似度進行排序。

Modular RAG

Modular RAG 是一種將 Retrieval Augmented Generation (RAG) 系統分解成獨立模組的架構。每個模組負責特定的任務,例如信息檢索、文檔選擇、上下文編碼和文本生成。這種模組化的設計可以提高 RAG 系統的靈活性、可擴展性和可維護性。

實際應用與未來

RAG在問答系統中特別有用,如在醫療諮詢、法律咨詢、和教育領域。舉例來說,對於一個醫療問答系統,RAG可以從最新的醫學文獻中檢索信息,提供給醫生或患者最準確的建議。

儘管RAG技術在多個領域展現了其潛力,但仍然面臨一些挑戰。例如檢索和生成模型之間的協同效應需要進一步優化,以避免生成內容過度依賴某些檢索片段。此外如何處理多樣性和創造性與準確性之間的平衡,也是RAG技術未來需要解決的問題之一。

未來隨著更多資料的引入和模型架構的改進,RAG技術有望在更多應用中發揮作用,成為自然語言處理領域的重要工具。它不僅能夠提高生成文本的品質,還能促進知識更新,使人工智慧系統能夠更好地應對快速變化的世界。

Reference

ReRank


上一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:利用生成式AI進行股市分析 Day 24
下一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:使用Llama進行RAG建立 Day 26
系列文
【AI筆記】30天從論文入門到 Pytorch 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言